package com.monkeys.pojo;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * @author KuangTeam
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Decision {
    double distanceCarGoods; // 车与货物之间的距离
    double goodsWeight;      // 货物重量
    double distanceRun;      // 货物需要运送的距离
    double distanceFinal;    // 货物运送终点距离所有货物所在地质心的距离

    // 计算潜在收益
    public double calculatePotentialEarnings() {
        // 假设收益与货物重量和运输距离成正比
        double earningsFromDelivery = goodsWeight * distanceRun;

        // 考虑装载成本（与车与货物之间的距离有关）
        double loadingCost = distanceCarGoods;

        // 考虑回程成本（与货物运送终点与质心的距离有关）
        double returnCost = distanceFinal;

        // 总潜在收益 = 收益 - 装载成本 - 回程成本
        return earningsFromDelivery - loadingCost - returnCost;
    }

    // 计算所用时间
    public double calculateTime() {
        // 考虑装载、运输和回程时间
        double loadingTime = distanceCarGoods ; // 假设时间与路程成正比
        double transportTime = distanceRun ; // 假设时间与路程成正比
        double returnTime = distanceFinal ; // 假设时间与路程成正比
        return loadingTime + transportTime + returnTime;
    }

    // 计算效率得分
    //我们以单位时间的收入（利润/时间）为参数，利润为货物重量与货物需要运送的距离的乘积。
    //时间成本可抽象为从出发到回到质心的所有距离之和。
    public double calculateEfficiency()
    {
        return calculatePotentialEarnings() / calculateTime();
    }
}
